package com.unohacha.qqj.fzdr.common.http;

import com.unohacha.qqj.fzdr.common.bean.FzDetailBean;
import com.unohacha.qqj.fzdr.common.bean.GongYingBean;
import com.unohacha.qqj.fzdr.common.bean.HttpResult;
import com.unohacha.qqj.fzdr.common.bean.MeterialBean3;
import com.unohacha.qqj.fzdr.common.bean.Meterialdetail2Bean;
import com.unohacha.qqj.fzdr.common.bean.MeterialdetailBean;
import com.unohacha.qqj.fzdr.common.bean.MetrialBean4;
import com.unohacha.qqj.fzdr.common.bean.ReleaseBean;
import com.unohacha.qqj.fzdr.common.bean.SupplyDetailBean;
import com.unohacha.qqj.fzdr.common.bean.TwoLevelBean;
import com.unohacha.qqj.fzdr.common.bean.WuliuCompany;
import com.unohacha.qqj.fzdr.common.bean.WuliuDetail;
import com.unohacha.qqj.fzdr.common.bean.ZhanhuiDetail;
import com.unohacha.qqj.fzdr.personal.bean.UserInfoBean;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

public interface APIServer {
//    public static final String BASE_URL = "http://huafang.unohacha.com";
    public static final String BASE_URL = "http://hfcs.unohacha.com:80";

    // 个人信息
    @POST("/api/mycenter/myNews")
    Call<HttpResult<UserInfoBean>> getUserInfo(@Query("token") String token);

    // 修改企业信息
    @POST("/api/mycenter/companyEdit")
    Call<HttpResult<String>> companyEdit(@Query("token") String token,
                                         @Query("typeid") String typeid,
                                         @Query("content") String content);

    // 获取验证码
    @POST("/api/smsmessage/smsMessage")
    Call<HttpResult<String>> getSMSMessage(@Query("typeid") String typeid,
                                           @Query("mobile") String mobile);

    // 聊天信息获取
    @POST("/api/mycenter/myNewsInfo")
    Call<HttpResult<String>> companyEdit(@Query("id") int id);

    // 修改个人信息
    @POST("/api/mycenter/companyEdit")
    Call<HttpResult<String>> setPersonalInfo(@Query("token") String token,
                                             @Query("typeid") String typeid,
                                             @Query("content") String content);

    // 更换头像
    @POST("/api/mycenter/replacePicture")
    Call<HttpResult<String>> replacePicture(@Query("token") String token,
                                            @Query("thumb") int thumb);

    // 发布管理
    @POST("/api/mycenter/supplyReleaseManagement")
    Call<HttpResult<ReleaseBean>> supplyReleaseManagement(@Query("token") String token,
                                                          @Query("typeid") String typeid,
                                                          @Query("supply_cate_one") String supply_cate_one,
                                                          @Query("page") int page);

    // 发布管理
    @POST("/api/mycenter/supplyReleaseManagement")
    Call<HttpResult<ReleaseBean>> supplyReleaseManagement(@Query("token") String token,
                                                          @Query("typeid") String typeid,
                                                          @Query("supply_cate_one") String supply_cate_one,
                                                          @Query("supply_cate_two") String supply_cate_two,
                                                          @Query("page") int page);

    // 发布管理
    @POST("/api/mycenter/supplyReleaseManagement")
    Call<HttpResult<List<ReleaseBean>>> supplyReleaseManagement(@Query("token") String token,
                                                                @Query("typeid") String typeid,
                                                                @Query("supply_cate_one") String supply_cate_one,
                                                                @Query("supply_cate_two") String supply_cate_two,
                                                                @Query("keyword") String keyword,
                                                                @Query("page") String page);

    // 删除发布供求信息
    @POST("/api/mycenter/delSupplyInformation")
    Call<HttpResult<String>> delSupplyInformation(@Query("token") String token,
                                                  @Query("supply_cate_id") int supply_cate_id,
                                                  @Query("id") int id);

    // 下架发布供求信息
    @POST("/api/mycenter/soldOutSupplyInformation")
    Call<HttpResult<String>> soldOutSupplyInformation(@Query("token") String token,
                                                      @Query("supply_cate_id") int supply_cate_id,
                                                      @Query("id") int id);

    // 浏览管理
    @POST("/api/mycenter/supplyBrowseRecords")
    Call<HttpResult<String>> supplyBrowseRecords(@Query("token") String token,
                                                 @Query("typeid") int typeid,
                                                 @Query("supply_cate_one") int supply_cate_one,
                                                 @Query("page") int page);

    // 浏览管理
    @POST("/api/mycenter/supplyBrowseRecords")
    Call<HttpResult<String>> supplyBrowseRecords(@Query("token") String token,
                                                 @Query("typeid") int typeid,
                                                 @Query("supply_cate_one") int supply_cate_one,
                                                 @Query("keyword") String keyword,
                                                 @Query("page") int page);

    // 删除浏览记录
    @POST("/api/mycenter/supplyBrowseRecordsDel")
    Call<HttpResult<String>> supplyBrowseRecordsDel(@Query("token") String token,
                                                    @Query("supply_cate_one") int supply_cate_one,
                                                    @Query("id") int id);


    // 我的收藏
    @POST("/api/mycenter/myCollection")
    Call<HttpResult<String>> myCollection(@Query("token") String token,
                                          @Query("supply_cate_one") int supply_cate_one,
                                          @Query("keyword") String keyword,
                                          @Query("page") int page);

    // 物资报价
    @POST("/api/mycenter/myExchange")
    Call<HttpResult<String>> myExchange(@Query("token") String token,
                                        @Query("app_cate_id") int app_cate_id,
                                        @Query("page") int page);

    // 物资报价详情
    @POST("/api/mycenter/myExchangeDetail")
    Call<HttpResult<String>> myExchangeDetail(@Query("token") String token,
                                              @Query("id") int id);

    // 删除物资报价
    @POST("/api/mycenter/myExchangeDel")
    Call<HttpResult<String>> myExchangeDel(@Query("token") String token,
                                           @Query("id") int id);

    // 会员中心
    @POST("/api/mycenter/memberCenter")
    Call<HttpResult<String>> memberCenter(@Query("token") String token);

    // 立即支付
    @POST("/api/mycenter/upgradeMembers")
    Call<HttpResult<String>> upgradeMembers(@Query("token") String token,
                                            @Query("id") int id,
                                            @Query("pay_status") int pay_status);

    // TODO
    // 我的数据添加/修改
    @POST("/api/mycenter/appMyData")
    Call<HttpResult<String>> appMyData(@Query("token") String token);

    // 我的数据填写报价
    @POST("/api/mycenter/appMyDataPrice")
    Call<HttpResult<String>> appMyDataPrice(@Query("token") String token,
                                            @Query("order_no") String order_no,
                                            @Query("fabric_price") String fabric_price,
                                            @Query("realname") String realname,
                                            @Query("telephone") String telephone);

    // 我的数据填写报价详情
    @POST("/api/mycenter/appMyDataListPriceDetail")
    Call<HttpResult<String>> appMyDataListPriceDetail(@Query("token") String token,
                                                      @Query("id") int id);

    // 我的数据列表
    @POST("/api/mycenter/appMyDataList")
    Call<HttpResult<String>> appMyDataList(@Query("token") String token,
                                           @Query("app_cate_id") int app_cate_id,
                                           @Query("keyword") String keyword,
                                           @Query("start_time") String start_time,
                                           @Query("end_time") String end_time,
                                           @Query("page") int page);

    // 我的数据列表详情
    @POST("/api/mycenter/appMyDataListDetail")
    Call<HttpResult<String>> appMyDataListDetail(@Query("token") String token,
                                                 @Query("id") int id);

    // 删除我的数据
    @POST("/api/mycenter/appMyDataListDel")
    Call<HttpResult<String>> appMyDataListDel(@Query("token") String token,
                                              @Query("id") int id);

    // 预约加工栏目
    @POST("/api/mycenter/bespeakCate")
    Call<HttpResult<String>> bespeakCate();

    // TODO
    // 预约加工发布
    @POST("/api/mycenter/bespeakMachining")
    Call<HttpResult<String>> bespeakMachining(@Query("token") String token);

    // 预约加工发布匹配
    @POST("/api/mycenter/bespeakMachiningSelect")
    Call<HttpResult<String>> bespeakMachiningSelect(@Query("token") String token,
                                                    @Query("id") int id,
                                                    @Query("page") int page);

    // 预约加工列表
    @POST("/api/mycenter/bespeakMachiningList")
    Call<HttpResult<String>> bespeakMachiningList(@Query("token") String token,
                                                  @Query("app_cate_id") int app_cate_id,
                                                  @Query("typeid") int typeid,
                                                  @Query("page") int page);

    // 预约加工详情
    @POST("/api/mycenter/bespeakMachiningDetail")
    Call<HttpResult<String>> bespeakMachiningDetail(@Query("id") int id);

    // TODO
    // 我的图库上传/修改
    @POST("/api/mycenter/myLibraryUpload")
    Call<HttpResult<String>> myLibraryUpload(@Query("token") String token);


    // 我的图库（公开/私密）切换
    @POST("/api/mycenter/gallerySwitch")
    Call<HttpResult<String>> gallerySwitch(@Query("token") String token,
                                           @Query("article_id") int article_id,
                                           @Query("typeid") int typeid);

    // 我的图库（公开/私密）统计
    @POST("/api/mycenter/myLibraryCateCount")
    Call<HttpResult<String>> myLibraryCateCount(@Query("token") String token);


    // 我的图库列表
    @POST("/api/mycenter/myLibraryList")
    Call<HttpResult<String>> myLibraryList(@Query("token") String token,
                                           @Query("id") int id,
                                           @Query("typeid") int typeid,
                                           @Query("page") int page);

    // 我的图库列表详情
    @POST("/api/mycenter/myLibraryListDetail")
    Call<HttpResult<String>> myLibraryListDetail(@Query("token") String token,
                                                 @Query("typeid") int typeid,
                                                 @Query("id") int id);

    // 我的图库-批量删除
    @POST("/api/mycenter/myLibrarylistdel")
    Call<HttpResult<String>> myLibrarylistdel(@Query("token") String token,
                                              @Query("typeid") int typeid,
                                              @Query("id") int id,
                                              @Query("supply_cate_id") int supply_cate_id);

    // 商家讨论发布
    @POST("/api/mycenter/appBusinessForumAdd")
    Call<HttpResult<String>> appBusinessForumAdd(@Query("token") String token,
                                                 @Query("app_cate_id") int app_cate_id,
                                                 @Query("title") String title,
                                                 @Query("content") String content,
                                                 @Query("content_img") String content_img,
                                                 @Query("area_id") String area_id);

    // 商家讨论列表信息
    @POST("/api/mycenter/appBusinessForumList")
    Call<HttpResult<String>> appBusinessForumList(@Query("app_cate_id") String app_cate_id,
                                                  @Query("keyword") String keyword,
                                                  @Query("address_id") int address_id,
                                                  @Query("page") int page);

    // 商家讨论信息详情
    @POST("/api/mycenter/appBusinessForumDetail")
    Call<HttpResult<String>> appBusinessForumDetail(@Query("id") String id);

    // 认证中心
    @POST("/api/mycenter/authenticationCenter")
    Call<HttpResult<String>> authenticationCenter(@Query("token") String token,
                                                  @Query("typeid") String typeid);

    // 个人认证信息
    @POST("/api/mycenter/personalAutoInfo")
    Call<HttpResult<String>> personalAutoInfo(@Query("token") String token,
                                              @Query("typeid") String typeid);

    // 联系客服
    @POST("/api/mycenter/contactService")
    Call<HttpResult<String>> contactService();

    // 帮助与反馈-欢迎评价
    @POST("/api/mycenter/helpFeedback")
    Call<HttpResult<String>> helpFeedback(@Query("token") String token,
                                          @Query("typeid") String typeid,
                                          @Query("message") String message);

    // 验证验证码是否正确
    @POST("/api/loginrelevant/verifying_sms")
    Call<HttpResult<String>> verifyingSMS(@Query("telephone") String telephone,
                                          @Query("verifyCode") String verifyCode);

    // 修改密码
    @POST("/api/system/revisePwd")
    Call<HttpResult<String>> revisePwd(@Query("token") String token,
                                       @Query("telephone") String telephone,
                                       @Query("oldpassword") String oldpassword,
                                       @Query("password") String password,
                                       @Query("passwordr") String passwordr);


    // 修改手机号
    @POST("/api/system/revisetele")
    Call<HttpResult<String>> revisetele(@Query("token") String token,
                                        @Query("telephone") String telephone,
                                        @Query("verifyCode") String verifyCode);


    // 供求二级列表
    @POST("/api/supplyinfo/supplyCate")
    Call<HttpResult<List<TwoLevelBean>>> supplyCate(@Query("token") String token,
                                                    @Query("typeid") String typeid);

    // 供求二级列表
    @POST("/api/supplyinfo/supplyCate")
    Call<HttpResult<List<TwoLevelBean>>> supplyCate(@Query("typeid") String typeid);

    //供应
    @POST("/api/supplyinfo/supplyCate")
    Observable<HttpResult<List<GongYingBean>>> GongYing(@Query("token") String token, @Query("typeid") String typeid);
    
    //材料详情
    @POST("/api/myapplication/appMaterialDetail")
    Observable<HttpResult<MeterialdetailBean>> MDetail(@Query("app_cate_id") String app_cate_id, @Query("address_id") String address_id, @Query("page") String page);

    //材料详情3级
    @POST("/api/myapplication/appMaterialthList")
    Observable<HttpResult<Meterialdetail2Bean>> MDetail2(@Query("app_cate_id") String app_cate_id, @Query("address_id") String address_id, @Query("page") String page);

    //材料详情4级
    @POST("/api/myapplication/appMaterialMemberContact")
    Observable<HttpResult<MeterialBean3>> MDetail3(@Query("member_id") String member_id);

    //材料详情4级列表
    @POST("/api/myapplication/appMaterialHistoryList")
    Observable<HttpResult<MetrialBean4>> MDetail4(@Query("address_id") String address_id, @Query("member_id") String member_id, @Query("page") String page);

    //物料详情
    @POST("/api/myapplication/appLogisticsDetail")
    Observable<HttpResult<WuliuDetail>> WuliuDetail(@Query("id") String id);

    //展会详情
    @POST("/api/myapplication/appExhibitionInformationDetail")
    Observable<HttpResult<ZhanhuiDetail>> ZhanhuiDetail(@Query("id") String id);

    //学堂详情
    @POST("/api/myapplication/appTextileAcademyDetail")
    Observable<HttpResult<FzDetailBean>> FzDetail(@Query("id") String id);

    //物流公司
    @POST("/api/myapplication/expressCompany")
    Observable<HttpResult<List<WuliuCompany>>> WuliuCompany(@Query("keyword") String keyword);

    //供求详情
    @POST("/api/supplyinfo/supplyDetail")
    Observable<HttpResult<SupplyDetailBean>> supplyDetail(@Query("id") String id, @Query("supply_cate_id") String supply_cate_id,
                                                          @Query("address_id") String address_id, @Query("token") String token);


}
